home *** CD-ROM | disk | FTP | other *** search
/ com!online 2005 May / com_0505_1.iso / opensource / top10 / amc_install.exe / {app} / Scripts / CDiscount (FR).ifs < prev    next >
Encoding:
Text File  |  2004-03-20  |  11.4 KB  |  354 lines

  1. // GETINFO SCRIPTING
  2. // CDiscount (FR) Descriptif et image
  3.  
  4. (***************************************************
  5.  *  Script d'importation pour :                    *
  6.  *  CDiscount , http://www.cdiscount.com           *
  7.  *                                                 *
  8.  *  (c) 2003   Thierry Colier                      *
  9.  *                                                 *
  10.  *  A utiliser avec Ant Movie Catalog 3.4.0        *
  11.  *  www.antp.be/software/moviecatalog              *
  12.  *                                                 *
  13.  *  This program is free software; you can         *
  14.  *  redistribute it and/or modify it under the     *
  15.  *  terms of the GNU General Public License as     *
  16.  *  published by the Free Software Foundation;     *
  17.  *  either version 2 of the License, or (at your   *
  18.  *  option) any later version.                     *
  19.  ***************************************************)
  20.  
  21. program CDISCOUNT_FR;
  22. var
  23.   MovieName: string;
  24.  
  25. function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
  26. var
  27.   i: Integer;
  28. begin
  29.   result := -1;
  30.   if StartAt < 0 then
  31.     StartAt := 0;
  32.   for i := StartAt to List.Count-1 do
  33.     if Pos(Pattern, List.GetString(i)) <> 0 then
  34.     begin
  35.       result := i;
  36.       Break;
  37.     end;
  38. end;
  39.  
  40. procedure RecupereGrandeImage (Adr : String);
  41. var
  42.    Page : TStringList;
  43.    Line, Value : string;
  44.    LineNr: Integer;
  45.    BeginPos : Integer;
  46. begin
  47.    HTMLDecode(Adr);
  48.    Page := TStringList.Create;
  49.    Page.Text := GetPage('http://www.cdiscount.com/newmag/mag_dvd/' + Adr);
  50.    
  51.    LineNr := FindLine('<img border="0" src="', Page, 0); 
  52.    if LineNR > -1 then
  53.    begin 
  54.       Line := Page.GetString(LineNr);
  55.       BeginPos := pos ('<img border="0" src="', Line);
  56.       Delete(Line, 1, BeginPos+20);
  57.       BeginPos := pos ('"></a>', Line);
  58.       value := copy (Line, 1, BeginPos - 1);
  59.       GetPicture(value, False); 
  60.    end;
  61. end;
  62.  
  63. procedure AnalyzeMoviePage(Page: TStringList);
  64. var
  65.   Line, Value, Value2 : string;
  66.   LineNr: Integer;
  67.   BeginPos, EndPos, valeur : Integer;
  68. begin
  69.    // Image
  70.    LineNr := FindLine('zoom_fiche.asp?rep=', Page, 0); // on rΘcupΦre la grande image s'il y en a une
  71.    if LineNR > -1 then
  72.    begin 
  73.       Line := Page.GetString(LineNr);
  74.       BeginPos := pos ('zoom_fiche.asp?rep=', Line);
  75.       Delete(Line, 1, BeginPos-1);
  76.       BeginPos := pos (',530,400,', Line);
  77.       value := copy (Line, 1, BeginPos - 10);
  78.       RecupereGrandeImage(Value);
  79.    end
  80.    else
  81.    begin
  82.       LineNr := FindLine('"#000000"><IMG border="0" src="', Page, 0);
  83.       if LineNr > -1 then
  84.       begin
  85.          Line := Page.GetString(LineNr);
  86.          BeginPos := pos ('"#000000"><IMG border="0" src="', Line);
  87.          Delete(Line, 1, BeginPos + 30);
  88.          BeginPos := pos ('"></TD></TR></TABLE>', Line);
  89.          value := copy (Line, 1, BeginPos - 1);
  90.          GetPicture(value, False); 
  91.       end;
  92.    end;
  93.  
  94.    // Description
  95.    LineNr := FindLine('histoire</TD><TD', Page, 0);
  96.    if LineNr > -1 then
  97.    begin
  98.       Line := Page.GetString(LineNr);
  99.       BeginPos := pos('histoire</TD><TD', Line);
  100.       Delete (Line, 1, BeginPos+51);
  101.       EndPos := pos('</TD></TR></TABLE>', Line);
  102.       Value := copy (Line, 1, EndPos);
  103.       value := StringReplace (Value, '<br>', #13#10); 
  104.       HTMLRemoveTags(Value);
  105.       HTMLDecode(Value);
  106.       Delete(Line, 1, EndPos);
  107.       SetField(fieldDescription, Value);
  108.    end;
  109.       
  110.    // Titre
  111.    LineNr := FindLine('>Titre</TD><TD', Page, 0);
  112.    if LineNr > -1 then
  113.    begin
  114.       Line := Page.GetString(LineNr);
  115.       BeginPos := pos('>Titre</TD><TD', Line);
  116.       Delete (Line, 1, BeginPos+49);
  117.       EndPos := pos('</TD></TR>', Line);
  118.       Value := copy(Line, 1, EndPos-1);
  119.       Value := AnsiUpFirstLetter(AnsiLowerCase(trim(Value)));
  120.       SetField(fieldTranslatedTitle, Value);
  121.    end;
  122.    
  123.    // Acteurs
  124.    LineNr := FindLine('>Acteurs</TD>', Page, 0);
  125.    if LineNr > -1 then
  126.    begin
  127.       Line := Page.GetString(LineNr);
  128.       BeginPos := Pos('>Acteurs</TD>', Line);
  129.       Delete (Line, 1, BeginPos+51);
  130.       EndPos := pos('</TD></TR>', Line);
  131.       Value := copy(Line, 1, EndPos-1);
  132.       SetField(fieldActors, Value);
  133.    end;
  134.    
  135.    // RΘalisateur
  136.    LineNr := FindLine('>RΘalisateur</TD>', Page, 0);
  137.    if LineNr > -1 then
  138.    begin
  139.       Line := Page.GetString(LineNr);
  140.       BeginPos := Pos('>RΘalisateur</TD>', Line);
  141.       Delete (Line, 1, BeginPos+55);
  142.       EndPos := pos('</TD></TR>', Line);
  143.       Value := copy(Line, 1, EndPos-1);
  144.       SetField(fieldDirector, Value);
  145.    end;
  146.    
  147.    //DurΘe  : format 2 h 20 ou 1h55 min ...
  148.    LineNr := FindLine('>DurΘe</DIV>', Page, 0);
  149.    if LineNr > -1 then
  150.    begin
  151.       Line := Page.GetString(LineNr);
  152.       BeginPos := Pos('>DurΘe</DIV>', Line);
  153.       Delete (Line, 1, BeginPos+55);
  154.       EndPos := pos('</TD></TR>', Line);
  155.       Value := copy(Line, 1, EndPos-1);
  156.       BeginPos := pos('h', value);
  157.       if (BeginPos > 0) then
  158.       begin
  159.          value := StringReplace (Value, 'min', #32); 
  160.          value := StringReplace (Value, 'mn', #32); 
  161.            value2 := copy(Value, 1, BeginPos-1);
  162.          valeur := StrToInt(trim(value2), 10)*60;
  163.          value2 := copy(value, BeginPos+1, 10);
  164.          valeur := valeur + StrToInt(trim(value2), 10);
  165.          value := IntToStr(valeur);
  166.       end;
  167.       SetField(fieldLength, Value);
  168.    end;
  169.    
  170.    //Format Audio 
  171.    LineNr := FindLine('>Le son</DIV>', Page, 0);
  172.    if LineNr > -1 then
  173.    begin
  174.       Line := Page.GetString(LineNr);
  175.       BeginPos := Pos('>Le son</DIV>', Line);
  176.       Delete (Line, 1, BeginPos+56);
  177.       EndPos := pos('</TD></TR>', Line);
  178.       Value := copy(Line, 1, EndPos-1);
  179.       SetField(fieldAudioFormat, Value); 
  180.    end;
  181.    
  182.    //Sous-Titres 
  183.    LineNr := FindLine('>Les sous-titres</DIV>', Page, 0);
  184.    if LineNr > -1 then
  185.    begin
  186.       Line := Page.GetString(LineNr);
  187.       BeginPos := Pos('>Les sous-titres</DIV>', Line);
  188.       Delete (Line, 1, BeginPos+65);
  189.       EndPos := pos('</TD></TR>', Line);
  190.       Value := copy(Line, 1, EndPos-1);
  191.       SetField(fieldSubtitles, Value); 
  192.    end;
  193.    
  194.    //Zone 
  195.    LineNr := FindLine('>Code rΘgional</DIV>', Page, 0);
  196.    if LineNr > -1 then
  197.    begin
  198.       Line := Page.GetString(LineNr);
  199.       BeginPos := Pos('>Code rΘgional</DIV>', Line);
  200.       Delete (Line, 1, BeginPos+63);
  201.       EndPos := pos('</TD></TR>', Line);
  202.       Value := copy(Line, 1, EndPos-1);
  203.       SetField(fieldVideoFormat, Value);  //α dΘcortiquer
  204.    end;
  205.    
  206.    //Langues
  207.    LineNr := FindLine('>Choix de langues</DIV>', Page, 0);
  208.    if LineNr > -1 then
  209.    begin
  210.       Line := Page.GetString(LineNr);
  211.       BeginPos := Pos('>Choix de langues</DIV>', Line);
  212.       Delete (Line, 1, BeginPos+66);
  213.       EndPos := pos('</TD></TR>', Line);
  214.       Value := copy(Line, 1, EndPos-1);
  215.       SetField(fieldLanguages, Value);  
  216.    end;
  217.    
  218.    //RΘsolution 
  219.    LineNr := FindLine('>Format image</DIV>', Page, 0);
  220.    if LineNr > -1 then
  221.    begin
  222.       Line := Page.GetString(LineNr);
  223.       BeginPos := Pos('>Format image</DIV>', Line);
  224.       Delete (Line, 1, BeginPos+62);
  225.       EndPos := pos('</TD></TR>', Line);
  226.       Value := copy(Line, 1, EndPos-1);
  227.       SetField(fieldResolution, Value);  
  228.    end;
  229.    
  230.    //Bonus 
  231.    LineNr := FindLine('>BONUS</DIV></TD>', Page, 0);
  232.    if LineNr > -1 then
  233.    begin
  234.       Value := 'Bonus :'+#13#10;
  235.       Line := Page.GetString(LineNr);
  236.       BeginPos := Pos('>BONUS</DIV></TD>', Line);
  237.       Delete (Line, 1, BeginPos+55);
  238.       EndPos := pos('</TD></TR>', Line);
  239.       Value := value + copy(Line, 1, EndPos-1);
  240.       value := StringReplace (Value, '<br>', #13#10); 
  241.       SetField(fieldComments, Value);  
  242.    end;
  243.  
  244.    DisplayResults;
  245. end;
  246.  
  247. procedure AddMoviesTitles(Page: TStringList; var LineNr: Integer);
  248. var
  249.   Line: string;
  250.   MovieTitle, MovieAddress: string;
  251.   StartPos: Integer;
  252.   EndPos: Integer;
  253.   LastLine: Integer;
  254.  
  255. begin
  256.    repeat
  257.       Line := Page.GetString(LineNr);
  258.       StartPos := pos('bgcolor="#c50000"><A target="fich_prod"', Line);
  259.       if StartPos > 0 then 
  260.       begin
  261.          StartPos := pos('href="http://www.cdiscount.com', Line);
  262.          EndPos := pos('navid=104">', Line);
  263.          MovieAddress := copy(Line, StartPos+6, EndPos-StartPos+3);
  264.          Delete(Line, 1, EndPos+10);
  265.          EndPos := Pos ('</A></TD>', Line);
  266.          MovieTitle := copy(Line, 1, EndPos-1);
  267.          HTMLDecode(MovieAddress);
  268.          HTMLDecode(Movietitle);
  269.          PickTreeAdd(MovieTitle, MovieAddress);
  270.       end; 
  271.       LineNr := LineNr + 1;
  272.    until (LineNR > Page.count)
  273. {   if (pos('« Page précédente</a>', Line) > 0) then
  274.    begin
  275.       StartPos := pos('<a href="', Line);
  276.       EndPos :=     pos('" class="roll">« Page', Line);
  277.       PickTreeAdd('... << RΘsultats prΘcΘdents', 'http://www.alapage.com' + copy (Line, StartPos+9, Endpos-StartPos-9));
  278.    end;
  279.    if (pos('Page suivante »</DIV>', Line) > 0) then
  280.    begin
  281.       StartPos := pos('|  <A href="', Line);
  282.       EndPos :=     pos('" class="roll">Page suivante ', Line);
  283.       PickTreeAdd('RΘsultats suivants >> ...', 'http://www.alapage.com' + copy (Line, StartPos+22, Endpos-StartPos-22));
  284.    end;}
  285. end;
  286.  
  287. procedure AnalyzePage(Address: string);
  288. var
  289.   Page: TStringList;
  290.   LineNr: Integer;
  291.   Line : String;
  292.   StartPos, EndPos : integer;
  293.   Adr : String;
  294. begin
  295.   Page := TStringList.Create;
  296.   Page.Text := GetPage(Address);
  297.  
  298.   PickTreeClear;
  299.   LineNr := 0;
  300.   LineNr := FindLine('rΘsultats correspondent<BR>', Page, LineNr); // trouvΘ plusieurs rΘponses
  301.   if LineNr > -1 then
  302.   begin
  303.        Line := Page.GetString(LineNr);
  304.        StartPos := pos ('"center"><B>', Line);
  305.        EndPos := pos(' rΘsultats correspondent<BR>', Line);
  306.        PickTreeAdd(copy (Line, StartPos+12, EndPos-StartPos-12)+' Films TrouvΘs pour ' + MovieName + ' :', '');
  307.        AddMoviesTitles(Page, LineNr);
  308.        if PickTreeExec(Address) then
  309.           AnalyzePage(Address);
  310.   end
  311.   else
  312.      if (pos('1 rΘsultat correspond', Page.Text) > 0) then
  313.      begin
  314.         LineNr := FindLine('1 rΘsultat correspond', Page, LineNr); // trouvΘ 1 rΘponse
  315.         Line := Page.GetString(LineNr);
  316.         StartPos := pos('bgcolor="#c50000"><A target="fich_prod"', Line);
  317.         if StartPos > 0 then 
  318.         begin
  319.            StartPos := pos('href="http://www.cdiscount.com', Line);
  320.            EndPos := pos('navid=104">', Line);
  321.            Adr := copy(Line, StartPos+6, EndPos-StartPos+3);
  322.            HTMLDecode(Adr);
  323.            AnalyzePage(Adr);
  324.         end; 
  325.      end
  326.      else
  327.      begin
  328.         if ( pos('fiche/fiche_produit.gif"', Page.Text) > 0) then
  329.         begin
  330.            SetField(fieldURL, Address);
  331.            AnalyzeMoviePage(Page)
  332.         end;
  333.      end;
  334.  
  335.   Page.Free;
  336.  
  337. end;
  338.  
  339. begin
  340.   if CheckVersion(3,4,0) then
  341.   begin
  342.     MovieName := GetField(fieldTranslatedTitle);
  343.     if MovieName = '' then
  344.       MovieName := GetField(fieldOriginalTitle);
  345.  
  346.     if Input('CDiscount.com Import', 'Entrer le titre du film :', MovieName) then
  347.     begin
  348.        AnalyzePage('http://www.cdiscount.com/newmag/mag_dvd/list_prod_resultat_sinequa.asp?p_StrSearch='+UrlEncode(MovieName)+'&mscssid=031016203459XQGJXIBLJFBWVWL13346&refer=&REFERER_SURFEUR=&keyid=33203623');
  349.     end;
  350.   end 
  351.   else
  352.       ShowMessage('Ce script requiert une version plus rΘcente de Ant Movie Catalog (au moins la version 3.4.0)');
  353. end.
  354.